<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta name="referrer" content="no-referrer"><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>0002.Python爬虫入门系列课程(樵夫) | 扣小妖</title><meta name="author" content="扣小妖"><meta name="copyright" content="扣小妖"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="有东西被加密了, 请输入密码查看.">
<meta property="og:type" content="article">
<meta property="og:title" content="0002.Python爬虫入门系列课程(樵夫)">
<meta property="og:url" content="http://liukuaizhuan.gitee.io/posts/fa3c4ba7.html">
<meta property="og:site_name" content="扣小妖">
<meta property="og:description" content="有东西被加密了, 请输入密码查看.">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://p.ananas.chaoxing.com/star3/origin/1cfee09060492f5ab51b2bd5cb5f3bb8.png">
<meta property="article:published_time" content="2022-12-31T15:18:26.000Z">
<meta property="article:modified_time" content="2023-01-10T18:44:55.517Z">
<meta property="article:author" content="扣小妖">
<meta property="article:tag" content="笔记">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://p.ananas.chaoxing.com/star3/origin/1cfee09060492f5ab51b2bd5cb5f3bb8.png"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="http://liukuaizhuan.gitee.io/posts/fa3c4ba7"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/font-awesome/6.0.0/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/node-snackbar/0.1.16/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://gcore.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: {"path":"/search.xml","preload":true,"languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#1f1f1f","position":"bottom-left"},
  source: {
    justifiedGallery: {
      js: 'https://gcore.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
      css: 'https://gcore.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: '0002.Python爬虫入门系列课程(樵夫)',
  isPost: true,
  isHome: false,
  isHighlightShrink: false,
  isToc: true,
  postUpdate: '2023-01-11 02:44:55'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    })(window)</script><meta name="generator" content="Hexo 5.4.2"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://p.ananas.chaoxing.com/star3/origin/c6eb667caaea4b46a934d65b6a348821.png" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">57</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">6</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">14</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fa fa-heartbeat"></i><span> 清单</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/photos/"><i class="fa-fw fas fa-images"></i><span> 照片</span></a></li><li><a class="site-page child" href="/movies/"><i class="fa-fw fas fa-video"></i><span> 电影</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('https://p.ananas.chaoxing.com/star3/origin/2ed646d67675ae9e95d603c29b2d6ea2.png')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">扣小妖</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fa fa-heartbeat"></i><span> 清单</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/photos/"><i class="fa-fw fas fa-images"></i><span> 照片</span></a></li><li><a class="site-page child" href="/movies/"><i class="fa-fw fas fa-video"></i><span> 电影</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">0002.Python爬虫入门系列课程(樵夫)</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="fa-fw post-meta-icon far fa-calendar-alt"></i><span class="post-meta-label">发表于</span><time datetime="2022-12-31T15:18:26.000Z" title="发表于 2022-12-31 23:18:26">2022-12-31</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/Python%E7%88%AC%E8%99%AB/">Python爬虫</a></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="0002.Python爬虫入门系列课程(樵夫)"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试." data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">
  <script id="hbeData" type="hbeData" data-hmacdigest="aaec255da1589ba3d261b1cbe118c02de7f585916ab15fdaf1c3d90738d36dcd">1b048b2bad1133e7d3decd938bb072dc1325ed02cd13ef1699b43a23d73130d4ea48bea690203bbef243d94679ca15e09ad002319aadac5ddb939db45b170ed4cb2b5c94792020a8f95ea704c4346e9adaf243797b55bb08a14267f9653357ee2cf9f01a7b0da053194229f1370ef68e182f04fa17917e8044a2eb604bf4c4e6ccfde85207c1d666ad38288618c28ea4ceecd14c93a286c69c7b0c94589c60214ee87c380d6a0491bc9107171bc9152317264d0d1100e91212df627767ebce93bd9d0f3d784decb755007bb3519f1ab8270789f6cb38aed96358eef2b05e4e24d0e6a7100938f33586b1d90a009a25a611f3efc8d1d3e26297bab0133db31cc4a67d81cf5c6e4b42ded455f4238f2ba0001446e9b4b4b50dfd318b61a18fb5ad26de744d42353aa925d90bfe2e9dfb144fdb4940a4267f30ac207de33905d0e2a411204615bb3e7ebc42ec1e55c217d31e8a5da79218240c96493b8dd4894add2fc7ed7b3b9d2f9d4405662a0940574fc8df87dfeefa1892cd1ac83f5da1f6014e403d5a21bcdeb20073c015d9df3db7ffdcd0be2c7c2b7dba8ceab5d3adf45f85df1ea86d06325fd272ce0dbde9f101bce4555cfba2af0fdb3e5c9da4c95db2e6f38581feea652f1d7269ef2df0336c7768c78d7dad0a40b54dbf0cd5fdf0bbcb5a74d2372c34756618b6835ebc7765394d9952ffaf56c1a8a36ebcc64c50a61f50dfd3054e17c2ab49eab88e068d22368f3db975acddfa30a83b78ee4b2f7137aacc80f9cb74864fce3dabefa0603a26dce53788812a1ccb23029ec2f7f19f9883952f9955e56afc66fd1a2369da41b760285302c9822b31dfd229829acb47ee053564bba9a3026797023fcfb4bb3eb9c884d73b997c7581e6ea5d5b55eda9d782b0b5137e1275773a0db17ce7aadf8d7431d375757a54c691922f85e241e370eb7f4260a61feecc1d37d7ccc57b9f091dbf9461ae45e553c1a7895f7da1397bdad677e8bdbdcb3d0e48caa4e12cdcb11b79a626435f7e92e2d3e72b7c544b89b9030469313ff485a8cd4b0711084cce8a8b79685d893ffb9f5004f523b0acb9f2a9d8737d27c82aa9d2964372d9394339ab6e620fd80edb6d0a4ca9ba1f2c9f1d6ac5f77b47394a233b21cc9da0a1b9986b3f155356490976dc034ae83c550be3db6b90cf067d52387388fab760e73b5bf6af64d696b8e1afedb46324bbc2c9aa7ac0325911158f58d5084a47724d77eca2fb1fc2862e2442d4d8f61efec3e504e2fc3ae161af6590e0c95cdb2ef4968c034ba4654dd8f6075c9fb282257668006a8d5afb841158b506f5918b48c19ddd5e32bc01db4ff3b7a45b0eb99da7e2ca3a2aa76719555986151f505a9b0d2db7bbc92e27afa8dbb3d0ed4ccef0ec26dae21d81906816af45f7b90c841370f694cda9cb6c7d451dcc15d8941521af350b6717c25195314572e4b3b79495d7655c21dea2b417dc06d0f602ba7157cbd76acb3dc3f06ae3254bda3aad64e3845c4b3025c1d672d2b8b7a114993816c09f9a3fd579899c3d2b38dcbfa67795fa8c214d675c0acf7ca6b1b636b2a5a54f79a345db144b65bbfa54466ccc744daa1cda76b964bba2c601031cd29c89c17f56060dbd944941304f3a28a470cdb24a5dec6d67cf677b106c4b0496c3a764a3a5a418f5f9b46d98cc4ac3c81f46f04892a455456399412363cb594a7d1a10ed1477fc46e1fec1cf15a383e09515be5862122646343d1f0207a1b3d47406f7478b274842819d54472c85dbf9a147715e79dc35afb9b883b098564b898bb8f53ebd90467eb22f8ef955a9819a511b8449b8447ae971235c9f28c2033bde7ec5dfaceb3d8e6071ed49c865242a4292d963e87a5e6ce81f9d48458d1e3fc6d2f4b6a36375830b906ce018b7b592f745bdbaace8c667ac4bd89bc0e5fe87e744242391a18bc79b941039503627cfca302bf8d754261a6cbe7b3e3548a62fad1520cb6b244e7f40e70251fe4e84b947e884b69e6163b5677ad8cc26de357b16bbcf4dd74bc7ca7bc276bd68c2a29203b3427c35cfb25b7649ac4894a6de696a38dd4167d6625cc2ad8ac245b5553568ad723e9becd88d4163653f3325858f2829f79434019aed9eba1fea6d669ad1d5697005f959ce96f1df889eb7213405fb62785fb12b6d460f1615de3bb9d6ddf85184854be7e657efac471ca82663a30e86721bb9d7a88e2225a424c4244963053af91128079fc98addaab3b736082fb99c38a7b9562ffcf9de10530691453b220135b0f4ebb5a01e6d909f2d52ba28ee7b78963751b1895e9d06551b060bd93bfa4977caa94a3929a2583fb90b2ca7bd1eb380034c6b6ab4016b5157a9a6215d82e5d2f52047edaec82b0d35659031e463fca655aed84dbc4cd1048e86064bd11441b1aa9e5c08d41f4c5191e944c8e2b786a05ba3ebbac101ba629ad8cfaefe07b151c0c8a4efbdbb345f646f4a2c94b528afbbe16fec3f911378c10b5d46676818813a8b72974733132ec99845afa9ba42df4786168bf871586da8f9dde6b8c08a4ee272878ca0099882a8def83942ca0d1382a98d09fa60ec20e9cde90adeb107fb991455fbfa2514dbf5da3ca3b77b6ace4dff71c521c9ababf1a36b59cbf8bb3700b066b612a635a2765866588ee004237e93da765f02889348bcbe10f8c9891a387e5b51df2579f0d73aded7307c072188b528dfc7fb4057079c4178b48179bc661d48a79831197d180997011375065fe6d9089537a9770114617a492f1e1063d5bff78d3ef4cfe626159b377603f77447219f5f89c968e92481468d6163d5c0f2b5856281696f4a245877d549977304c3597b6fa45a6b45122d94057e4210a5bd3688069b3aae1a928f5389ddb181142dd49bf0555e2804b26bb520e4b96283c0ba32fe16be080fc5d7129f6add9698fc9ae30264e4fb08e01a85aa1afaad005af7475c365bcfed672fb8f2b9ba1591982a28effb8a384311f9e0f503890443cb494e145d3418fb794463b728b4a21909d0079053a5a021a31b80265ebb36e4a9a8357315ace24e39cb8d64b12c8d283c402850b94195bb34d77a3bcc8a37389b291ef8e4467cd3c4e96d536abc9fa48150a8063721cfea8a5383279ae762fee25663784962a8600c85862331fe5c6d9b62fb92bf0b7928a30d86cde1e69d25ac4ecefe0c46c62fb894ca26669032c13d9e2988871f2240e06c4815e16e430bc7ee700db9efefa5e7a2c74462d1bfc7dd354e19f042ce52ae6209364df3eed5f6961339cb87d7e596626678620a39d0eb48da4acaa1c3818136bd0616017ef49f0ece1b4d777501e3dfb24c8ce737c9d34f3c0390d9d51206cd0ebdcf1794a29b0f1371c3e0d17140d843bf01b57c588dee91a24464ab41a4c3abe8b759df05971b72366d8178a400ade94ca22686d7edea8c8964e75ac287b7f0fa5b8a3eb89f4822edd35af0a2919c0a4bc9e324b6718b16565de6beb6ea563b080600e7b7ac9b67341d74cd8a3c80f30cdfae7562c2b60ba45d17d43154afe71b217da869183c9d5b012e50279316d1fc56e4adba6976840309553f5385b47fc6fe6e6b673acde13f10c498d4a774359c82230ec15067c7b7dde2f24f6bbab10d06378993b5f87b9b2e4c9e4c9e044fc6938df459b1842624c1d02b94da86fa3cf7f0e529c9d007fc27c62cd9881c1c15c3f48ece21c1fb89cd007dede9811210a38692693cf658abff10defb2d25b59ba297ea7775d8a2bbac696c2efd3e79c3c99b07958167068dddef142425e71efd6ebd9acfd34fa70cb18483b70ded549f750e65165f0a7b6836c247de42f46dd2714a9b348182d54951a0a47981b1cc614358f8227c778e3b439cb293780e779d64abdb9ecb353317a0d62627642da2b8d42003b7f46ff0fab519ff3bdd0d6588608b9f07a62d9de40e7f90651d724ae8bed5f4812742d17807d6cace2b8537072c22e27b3157d3be2b9c4eeafd98a578898b7d6b172861ba186a503d6132881697a7c5e892d90547912ae58dd5f0f5f4402a9bc31e322f32fd840c612a2772cda73294e1b6a7b822dcf6431dde740479d22e58ada5150b1001398fc594321de5117f5ee48150218f72ee19d51c093768fa9e68d18e436e27c625a6db5cc75c5be8304ec50aa61473fe26748218de0b1ee51832371d10741e0b29c6afdfd604a87e2b215a84825b749cbfde065f52d5dcf72145538d3fadc1429d2c3d332bf2df87e64fda0d6af7580bac93a0fe22187d41221d09b2b0cc22aa36b2f6efbdc727a4459524ab8d876d8dcdc7d4fc20d73788506f7cf71965980b6a0d410218fa983fcaa07291b8b6848cf02196e8e59d9e8b6655c072f4d243d1549bbecdedca327bc002adeed8fd26aacbe4b845b6ad8173329284fea3ab6564bfe5146857465ccbf9c2feb934fa0f3910dcd0a016403df284ac2bc2549dd8c66b7d1086afd78d59a0f5ee32c6c1986f86751948ee76883b1d5ea019b3c1b8b26c638016f2bc969d97574dbad3a75b01b7a878112ab1afb8bfc3331b173032558381f606a6677b39bdf47f5e0eb7d8ca0e151eafb09087d84fd5188e587b749edcddab034c876b252efc07ee7b0959e42eb6e617d20f31134bd3e8d8584e43c07e82b3c0961d9bdd8d737487c9b1287fa77a9ed3cb38b2c5bc3afa5ab493eeff98a80c573f8836dca2e153c84a8020f54aea7446314188c50c1734f941c5d8fe4a239a6d7cd42fa2b358bc49fdbf8b9f52550c122fd726045f9c6b4c8c348c71c2362b5669882c7ff1ba50456e32bcfae0f40ea0a8f1dd7d96ffb8eb09b1dcf14440f71c1e69627334983bd3b4ee117446dc435ab5b7836214a28bfef642bdefa917663caf5064381734b8ac560c7dea34e7819d1715e3e0cff0db1c9f3397c0015462cc3fed223185570e7ade3836666f6fe5c8d7ecbe13171474f96592ae405581da18730b424be915f3b508e77745ee1e92b1a00fd99d6b47f76ff19578593d3ff872ef38c3f7f2d61479ef5046795a3e5ade753a2a0b29da140725ff1f589b5bc5e09cbc7998a60456b565001dd5788a6451d02bc472d2cce9c61e9341946a398e7e7c35bba43c787466f237a91545d2027989cd8744dab406a5315a366577266b1005a48fd861607280aa0769d95efe45540d08d81abff1a72171121443c16de3a5dd6b40fe261905dd4751ce1adb47864a375d5fcfc37bcaf0d71b14e7682074dc75364f8026cf3b8581d13da0f8c843fc1fbdb0f0fca037a8df93b42e1cb02c62f429ff7074be1ecb88429bf0c012e80a87429d7984508bec41c46c81045c2408ce4460aead0f856bcd61997430dd0a1eebeeae40eb76b00214315d9e1bd63d92d9cef3993365ad01eadf75aec19151f91505a3fc644e93a330c9b949a7db16e698c41215c92559575c4af9de576b2260dc7ca987867b71c76d260ad34afe5663a94f196a9fb2ce66832b940ae56612f3007766b869003e63622c1176dff3aa6f9fcbc4b0b102c7d339be38eea870e0b037bdb1b5657d065c1ce4564d588968547b719f01ca90cd0cc794b7af5cb31b3de4dbfbafc35d09ac24945569ce52c410b428e71089226872dc9252d6fc8b8c4f2cd1a8d019a9e642b9b592de1ed0773996b333ca38590cca034963c85dcd7fe972f4abb6d60e567f54a64e54eb51680c3d58704499fd2c048fe43cad3fbf4a00dddb57112a6cafef3e38a0b887008b7279a95d6ace470841d1a2bc7610fd5aaf1ec407900a370deb64f199434997ee27b3a5298341020de3155c21cb0a4b55509fcab57da3879d090f92b3abba8d29536015fe440043badd80607a3037625da6002754550d5977fff5f29e7f3a077f8df16ad93ccfc44709022b251447ff694a9fa4191b5766a0cecbc1d6883c17d363b988578e41680345bc3355f5402a4e60a61efa6e054a5907bb93063ecf77679eb6adc3a4d04e8aa1c972f2fc4a2041250e911120026d863a1ae80ddd8f7eddb72e2d4da6d45c50b858253b8f5d4ccfe400e70bb5b7655dd7e6930ebd806cc5eb0e401be11949d476161ef71991aaeaa4d912920e1b4b7450b6353fa5704822ee029da811be70a0754f003712a78f4c50291d8466ae46e54bbc7b2950d36d30d11613129498be9e5a9c0da7c3a38d5148018b17c35f8b9b93888c88ee0a971167cb75c80afa1cc0e1ace6a8369f465d801f6e039d098ec09ad861e0c7e015f7f6ae478e4ef5e8541ee71e36bd3dfe7528889264733523dc549f3c2a03fdb7a30bf787bf74294607b3e01662fb20ff1ec6f21bbc5fe777b4c3f467238edd227571629c624ddb52126d8d2cc2d860da57f32823d938fcc8fde725ce914536b1846e780d57701784e55c54ae9eb032e481c0d49c44c417a6e608877031419a453d50093862ec50c57d27d6a42e5fb2acf0b0f842b355c4076b453d9817699d4b68b6504b7e7d98e7f425566b45daf75936503597298b8a56ad795338b13004d3749d6c31e8adc23842fdbf92a52b3f408aeae0fe4bbf133015ffd852347a027595b99856a5d17508209173e09debf7efa535383cae80a611aab247bb83d1b03895c0547d5d73f73db836e4f9e8a6037a9be138a6c9f39730bfd583d0088b70a446c2cc3f785da26f937f6d6059c52ab013a13da8b9c61ac7920f30a15626a2f5784ddd1f081bfa45dd81209aaec48f0792c4e84e74bb4081d96bcbf2f5be98158a26f41e195af9af552667fb76a1524ad13ee5abb4f7c30475818493567967480ba115af30cc3af2f26ca2968e9c22fa17f9fbb17c5f0651d98c55c23f13d68dc95dfed1771fd5a3f9e29525f3e02ac8a2dea0e41336407a626e14245478c39d2bf66ea81ff9605e225f045821566baf41062bc60b26342be6d0b8211036126ed6f46e4a1788ed99ea7143d61c3de924539ddd9e3d27f6ead71c8aaadfc8169ffb17d9276d23704123eaedc5dbafbe6e15b2deb2503c42812682accb2b44413ef5cf1e08e4b1d2f0c3c1750c4075d9afd5dad8d961225f2e93ad7e3e9848bd876204069d3c2bbca774f11dcaf7874e9d7be311495ff5f250cfd017f8173073450980c9e30ed70d4048d8c794015c04c75a75fa5ca52eaed0309bbc2370f7545e826e9b2d89b234ffe07caa1ee3e97695203c46d047202eaedf62e44581de1730f35a131b1d83b4fe1913302843b093f3082bd38fd3d3499a3f949fd53d6b0c6953ddb0c221b2100c89f5cdd76ef0daf54b86c3a25abc1c431450356ca434c1df7e1bbd51db87d45e1fffa9cce68afe60d816eca9edbd0acd40e271292965bb40bc2c4b3f72f15aa1545cd075e48bd0f9ed0e9ca09273af05b508190ba1ac223475281978ed9399da9e91a55d343f0d81637511e599a50a88f448af1bb7bc6bcc70e17bd2dc3540a234afd459a54cfa69acd21f2a3d4d336788749765159041aa5233fdc848b52d8a9e1cd6af17e367cf1b2752884002704aad8be415f50619b5aaf6de1b1a263c38d56f275cac45768cec09d4abddf4e72545b2e82ea247852f75025b792d51cd3a863cc194774a941ddc1f28051417b43d9cc16366a2617adf921add95deeddb9a2e6ef0faecdac1b7b8874ff5d4e62e459f7e8aad9abd38487e7a8bbf49ca435d36713f903cb1a46be0c8c2e6b723d91ee1543933f55bea23585b9dc866e2f3c8b74c45d0b2d04cb17f84c2038ae1b9aa244847511d5b7e4352537fd51aee39d679289c6c0433293a24101249e5531c92d406ade3616074e6c07a0bf4a233080999c852ffb17d3772e0ff8eaed0c6f8add44cea95dd5675a952e77dc08e46014d66873cb5666363d287106a4baf0de042bdb46a15c5a2f7a27acd4a5dbb74ab28301290e847a5019b0f5248e9968cf86eb63c8a9addfaa2b3d561561ea05f6aeeaf9cfd81fce23579f918d4ac1930152438b70d88bc971a008d17e18cd0d2d8bc47b1ba6fe588b5cae603792989b14025d92ca58c1be15b8c803a2e07b126d6d0ca0dccfd727818dbee3c7902fdb9b16056ef09e4d72770dcf4a3e68901f5b8ee8ccbc80a91b504dddf774cb91bc9f64c60702bb43d2b6b69941657978c631e9f9ed550dd98da6ec0b385e2326735bc3243101d42dcc2a50f282fdc9cc4fbeb072f5f091f4849b21d3fdd51b9b9bfc1da9e4803f770813074393f8819637a0e966939968e0d5b1b1666d7666f9001ccd367601273d454f7fb73fe01bf7aea596a70b396af2faea677867048714a0d1f0cf9b39fa568e1b7623d66230cda994782a1c56b0e269dc3b2fdf3be0132a82a166a7c88fc7ed62a5f10a149af8bf3e777464a9d4db6f5be90fe69209c2d0c4946f2edea942cc535cbdd2902236ba52d62ea60c7221d43f628d2be34339775577e83ad6c9674b1d6f0e095489cfc995f5125798dba0483fb76e5bc88339b0db8351bda92c2248d24ffaf2fc2dd5c5505dabfa4a19f9f71af9df6ec98052a98f955ea373e35c6893b8f29b004f189b747535e00787e9b915b8eb136867d300da9541c22a9856e125a9c77bb5047bd5325f5e890b5e4d37b533f23e254144597c285720fe24b229c9ae30e7c24d674866a7f7453a380230155a8e550a94c1d038178221bb5d6d9378098109762c105e0c54b53ed35c8b8d541970f13f96097b8671bbe7eabcf281cbc3acd474c88f70ec151fdd73d6e9a5c253ef4cc3d8cdee9ea75aff3f1bc22f5e0ec2c7a819d25bf987788a268ed4dcb0cdd6f581600b238646dae2871a35199cec31dee5f6fff67866163e046f210e8d422025f7a7e06a1ea50c7aac701756d5658629a2ba853807bd01d3f6ad4f9d20a3f77153031703753af508e87c44029acc99743334772d52a0050fe3c75c021a7fc01422a9be7c20f4a1582e638667d2ce7a59b61189a29076e05b277dc7ea1e4611b322d4ef791e96f00e804a8af6985b97097fa1444d1e3bd37c622eb89a8fe1e59baf95bcb2788b2d0b7dc8e692afe77883182e5ddafa0a51425ec206f29cd4e877849496c98fe732e6a50fcafba3f9fb3afed5918f6e0c3994ae55f405ef7e1a039be6fc11f86b7524dffa5065105e42ffc893f12ea6e7bcf723d8bd4eff4a82bf1b93fcf3554dcd8877ab39eafa4131a755ab3b1544b2c9a8bc609b32449cad98e19b2f7aec69357ee00b86a873df4a505aa07c168e67f5f9d3d72ae0c219aa893e4a8ad5c205fffca9634a5b834b4bd2d5e695ad3ae32472f6af0a96779adc500de0193dc9a54620385ae426cb19bcb8df3e55f48e7ad43b4fdc9ea3a8ae1a7e9770743dfadee2a4a826d8fbcaee892994ea5d6b03a2e04f99980c45193f9493fa6a16777cb2cb0037599a6928efb2abe859c20365ff3315520ee50ce830017e4b2c968570d029ff1b420e78738ba35419e9b497fe1a8ded155b83918ec2190ad1066dd38a1e42a9d946e4b240c24c91edab5e26682d02b6490d3f3d89ea3c8cd0ecfb73918ba947f71dac27b0806a944d62e326382eec02465813506dc68837e8c709b7ef8919b4b60efb9c7666e7004a86a160a05d37ecba223d06dcd3c2be0b19baa497435af5ea37bff67c8f007361f311ac6c987d4945624dc2c9240f6a2e91bce595a50eb8f4f3c0b15af0cf93d2aa7f0a36f4c0bcccbb01a897f68948ee50a05a8bc25198b2043d718058b2d4e655fdb0c265060d7eb099f0f75757978497b766bf6dee11f3683b71bbd935218cdb2170aea44b2a17bc8dd9f22b6676645345dfc748e2955f98ee1eaece8e468281e302f84622594334bf87b508bae2764e441594151adac7579ba75cae1d89c2f49663d0f7ed052a4c24178527bd5e3ad176d55e2186be535cf3e7ea5ec010354c73f979e3ba45720eb19d85ef6ce0eafa2ac26854dd6e0f1d4af82b81811b6350095e0aa93cf080054d50d336068cf7b6fd6b51d0bebb030ffd942e54564ab2fc73c3741681a93053fe8e987891bb834d6d3e1928a393bbd2f7736013392f68d6f40ba54da5f0df98db13ff275f494015a86bcdf46ea2d255bfe13698635fb45b0f87e45e9dd57399fd5ae6a3f161d08cf72dedf678164619baa0d365aa872430aa4aa6cf885bbfb67ce9428c3fbdb21dd2d4ce6492328d89fc10d15b3049b94453a0faf84f9f53292571d85849b68107857694a941468ce76864b60aa1519c9e0088bb9b18bdc5f39c0bb06351303d8fdfc3bdadb8e83df80f405cf35022e088ee8f84a05494c273208ad9acc5c52f3da9700149f3bfd37dc692c227f75ececc2fd1baa095a3b272781acd207c825aa3e6f5d6e502d77792ae959f59c6f19a0afedb48ef2c5a5966d28aeaeb852872c5f8285832d71989b779c7dde0e8fda55d002e913a10bfea332fa96505a08f3732c699d55c23fe8aa7c1d1f9c5e49ba2e8480b769683f70fb086b33f579837c1660bf958aecbbdac1a4bf4880fa402187287772ea8bf21e3fe98b29615c97eef7ddfbbcec1749eea632a7eeb12ff55f01b251aff50b84d3f6cfcaf40df60a573f167cc3fb834a1a294cd6842ba7081256f18febd719da400325ac880c29db24da8b3979bc385cd4511075db2db83829fe0bf4c81c56303ccdf671fd67a43951a5cd11704918688c9284846facf98a670ae13ec65b99da7c1b1af8a2670db4f5448beb2fb3773885ecb79d996ee66b3ab8803108bf2ed8855eb31abe932a425c6aaf4d501f378c1660ebba3e4cde171b551d47f26cc2ec807b8407a0d7673b16a9813efe0968342663d65ef47dae8bcf7e574bed96c90fd0d1865256a43ee6c7b07adfcda3912a07ed948954f5e56d7b0b0a695b0f3668e6fe1f136c01e98441d70a2d1c16f63bf3805a5f484f26962a8c123e5235372e5aa36ff90516dcf9c1ef0ca781857f44de1827701336beddd73eb6275909a40cab8d69a083cb0c81a53390be519ce00d2e606ac81781bd1dc76609c2cc305029cf2c76dc57b6c8b3a78cdfe89b2533d41bd528de0596605a05bdb25f683a43436cdaab6bcff55d1ed54dc868b0947a0d61582b5c021a06999aa3d82c98634fe434e7bf21ba46584bf93b1cf1a4828943e90085e247bccb5194787d9c8221400a7d0936d9196f89e3eb66b320ab58581df9ec15703763fd7a5b465044f16db24e1d81a6b940e203847e5b62a35bfa1e934fb1691ea04e7993fb4166e9ddcf0f87c322e6567a3f1123f6bf39390695a4282c9753d3fb68ba21843a8197599bf95a3ad1d9af608f0a29db407e3e51b0056c2c6e04171759deebb8b71b69e4c35038d49bb3e13ca09656948f91a6a00591a1edc4b18eae8102eb44a5b9c7d8b037b16c6bfea8277bdbb4e032bba1860d833ef2e698813d782cb4f1d78758b9fd342ee83753c10e1f227ef99844f499fdad38f2822b332f782bee52e98658960db6dbd1e5d2f9e645edb44d3fb24f1b96853a67981306fd0c4c9031499acf1cc95b5acf2e303680c5a96df865ada905026ceb847ea2c94c5d37df1078146b067b78c6931c688229c3652507cd838d3bf2811c3f9e5218d61482788102a228725117e71f80e97ac4fe73ad2f0bccefc5827d425822c7c7e84dfcec748970135b87bbf083f15a4fe508a78b5da6c28a6501f1c74f9c855ea7a7dd417d665a688467299a5d5857fb4bac7eb7cd3b34c4ccf856385c6ad49cd0d9c3456a4856ee6c545c3e116a3bbf72b47a62d1b0dc4259bb2cb3fb7bf3199ac6eefca7d60ec3c71e3640b28842c938dd8bad7e3041a03163f90718817dc0b6c4b578230298a38309de1f51e17d6b3d703e35da31a7787fdff09e5ab733b920079a5ba1f572ddeeaa483ac9f2c0c8ba01919881ddfbfc9792dfb13c879cf46f94cb50a9594bd667182384b135912a21af76ff3aa6747c68f168aae0e13a0049cabf46631a7dd2f5032fdd02f77149311445397c25462d20372a5122431827d669443c1057716855d0549bbaad7188c46af5936d4a986e09badaf8131311fd0af6f4d7e47984d349c267ea768a9a6b7142d3dcc742fe4eb1bcd476e0def1f5cc8237f2fd428b29216191877855e593cae65d9601f91c51896f7104c9c740c058ddf1ddd97360a95ec90a398073e8700fc340896a15082941a4b753d5162e0dc1cfa7c6e3eb7d616a19d202a11575e59ea11b82cf256da6097f5974eb45bbeabf4168352f1670509813b3584cd647de75a6dcad1ffee17efd51ef739fb25a9898dd11b266cfa05abd15d62d3d8dfa1e03e18bfe9f43c428c3afa3511605d5714b8565f83f832acc355b940dfa26207390dfeaa926551f974a95133b018b360b6db1e03c93bacea890d55c7ffd4a949767422212f89e03044b0cdba512363190db3eac1e376df08fc71d3251bfb5b1be0716c4d587a1258a70ccae4bb0ed9d24398f48e28344d2d763d308cee5a3c9f0b2288594031d458bca3d0ead68c6373690ca8548906c0b5b0cc248c3fc9145d661b5bf6fa24320e807c2a4cbec36cf0c4a425f9cb6b10564dd48fcb02d8fa0f2f39dd64b226e26fa1230c1ffa3e23ede2c96195503a77388f749e6769665c2d8bc8a7991b95be2ba7196156bfe5c2791a0739953e77daae26e387721a5e7cd31cef4e2c0990ac14a777777657df2ffc1ed3ef7c4074bdb1a53072c5556c0ccddc68b56fd4770280d1cb99b7b5aace11535e4ecc57e28886ad55f5d69e953a34296159f5d3f44a20babca4e4a385b5224f2e4f50b38b1524b5bbc2353ed60a681e67cbe6071fef65c6cd347686cbc8fed0bd4d13ab4f8bd65f9849c48209993e43a53777565196d173262cf69c68f85e6e87868887d8d96c49fc031e85916ab0552af2e7005684865b743caa4581f07a9801e26686ee0ff37847c7da568ba40229e60a55eaaffbb99f0ca8e02648cf92393c86f9eb4069bced6fb2b24ea50ac9d317b19ec9443b683e62d00253f9e19164430fe4f9b7cbbce2b19eca9c1bf6c2e1a2c3ffa6f5ad230057d742fd5744f200bcd8df4e74948e2ddcfe0bcab76f53295eeab4a0787d11c32563545a6cfb239035c9103838bab838d358117f4613b88de14e4faeee7a20b956540fcdcdc0e96771a13f72338badfed63a06014f3cdc916d34b6baf9a1d0f14247595f30561c76ad21e881bccf389fe7537385563ff7dc95d0044f27f37182f600f5b2f7acfb945de442dccd2c176b4bc22e1d47df8360c23f5250f150ff08187a371858215bdd65c6557ef8445e48680cfbc3cda0c0f27f204269e826e386a417b829e19dff2a2f928240eaef6d6896e22bf52f61de0ff4cb3a5ffefc22ee9258b295337e1316c0b5e6494c1ae2f3c3b785a53c69f6783bb651485080ae9387dd101c8e6754fdf66952c1c4a078f1f058e547659ef4ea329420ca70208d849a2ff8fb29acc9893911e8c11160f2086f402901d8a611ae5079a127a18ebbec85da6d6b600ed23ba88c43402e513af1b492eb10379f5ca7cf21f599cbcf1c9a5d0c20b871eb3a6abf5c0071933e4b72249449dabd2f513d79e409ea8cdf3d93b70b55bcb2ff54f77e8f0cbe937cadd52753271289eef21a474312c8d8d0b098f881ac476ae54c490480fdc3c2aa7a5349e17dfb93b4f1f2503f550ae1ee38e1faddff4b607fcd4a3adceb11a88a9620caa9394d44f0509c0f3a6a30c3c6c033bfbde43cec5d132bc9407a79c475927ea6bdffb6a40b1d7372852e42b5ed321b5c4dc41ba79109762e4909113a8a8d879f4489e82f6ff90d677fb39dc7e686a1eff97948ee136ed6093e80ca5baef81b7245ccac22f81fd281c2c12246b0c7e761e8097ee809c6831c4de1d837371bed837d28e657a3a275a5fb99ba214ab1435871f669711f54c2473b2541b3e6c842d703f7102dea65f626c9af589981c8227cc0b1a28a488268a278f7655c22c833d1678d54308bbf6f2c8b38dff14fee44f20231841185f5b2b762bb3d400a08661af23f2ee96459ee584dc28d38b889c18dae3d1ad3f12c24aba9530d7eb010d1f745f95c42cbfddc873bca75831c89caae2a7cf337202cc4ab84d489aa551484febf901f18211325be178975466fba0843f5f6fbb55b501f8f9b6eeae2ed6ca1d85307d4eb33246bc729031f0aafc152e845a681b1243ffaae747cf14472308eb3bcfc610e7f2b9b69e684b4be10fe3caccc3a5ea425c0807ea5f4dff2edce9d31ddecdcc9b00b4abf7c7e57384e3deb2fe2bf47e22ba089e1f6619fbbc8828ed42dee880087f699698dd527aad96f90c03ca70dc3821166a6de7439d6d18d58f9b3de733b26e24c6d49758137ca4fb17b22154a83a4e26566a2920d2f0f56c3fdbb46abd4bac113144de7cfa0e933364eec2a29caaae3baa2e838f32fe3ea9903cdf9c2692c447e1d45ff0134e335eae10c624620b1f2c21d9b42e5b3c08ad3ffcf53d8eb678915a946d32108b311a39f54d44f2018db3316caf23aeda5523798ec66434cc98b95a7f00cb3820a284c18f6634833425eac13c050175534451114c55e41657d68e2fece7f4c995fb46f9b61f27a7d79767a0da89478c168b3afecc1d291deef90c2ead70d3855ad76b1a4654749c545a91368d73448845bd5744ddcbde85fcd7fb44e49c7b49a86434438c3a93ab9725acea396f19cf9e7bb8a259c533168cf63776033fef948a80bbc71d21a3689fff0bca82e8d80deb4ecec5322d79b92dcbc44a49340e8e86673baf463f5b4c710944431469fffc1bde109006f75d7ebf0e760533498ab6392cfd78b304ebf9348c7d08861106eb252aa18e1efff09cfd05b6c3c6f57969d990fc28b45e3d3c0022ce61b7f20655bc913121b9f2908c26ea3c83aebdd518d40eae74d66b82223f6ee98c56de0571ec0a3e5a8a8f0d3a973ada29fdac38e77299e44255a2d8ea81dcc2a59d7e86ad1fc827d1c5ff7d7bce22658b55082d2dc89cfa98cbcaf317eae7ed84a159fb686923e7b8f5bce04fa8a5c8a58f4986a7751a66b8c2255863302a5b87093a46b1c7c5f831cba6677ec17b0c957954fc34b5ac5ac2c965088d7c145237ab1d995a3987d83aee55bc44dadce4747fcf02ced53525c1377c1627de3f7a0bb12cf2397a7b77c09be9073339648c09aa6220908d460421b8aa5eedcd733219ba4f73d1fcd9d40fecad38ba917ec5c09f3244957fac13ef03efb4b292361793b8afd0056c2fd4d463d3b5b01997d6a3aff31c89f1188f0e9364ff764aa390144c17f55bbd5c8951a8bab928518f709d2b5c1a5475c5e2269c6c8b92c28a1293fa4e6be61ae5fdc2f751fc67e2935b857693661b0f8737a6277bed213f501b7a45e982cc1388ec7dabee989353979614f0215a3bc83d75c803c363e17b0bfa710227b8a005cb74dbf90c8577760c59ba432492ebd15394178852faa9a042e9bdbab47e65f9f6b1b8b5eb924ce58455674ddaf78fe9f11ac1f041464a47ce93ce2c70eb7ded9474e1064531bdda212b2722caeadb9da729580d1c7d70b9f42dbd7b34f94edb10cb575045cac3ea020538074d66b688d40e07fab99aa06f29b35be4a17069d4d1efebc62cf05e982cb9865c23cc43d8a0de621a73a3d49afcb7254dd2c4bb09c1beaf783cc8b1b9ad769313026a7a65c10c9c5d89dd8b88c7b7e9b7248094b7d64016a7717c3df37ba896373307baa98106e1ff1966e690b38902a3864e484722de62a62273fdbdb5dcf597e4a4954ad2188d72cbd83480b4f73d85bbc16b828788eaeced738698f1eeb3ff5ba0854fdbb4f63c385405fd4c84f46159d398b02f21ad6c234ba150615a2d489b163561ccb252e33953a7f4ff14691dc3fb3bb970112113bcecbc215dc144be6699253c95cad20d8aacc2cb845bc45cf9fbb7f194f1d7ce5ee511b15eef7b5e62216d5b75b9424fdb79b29e9fc7bee81596e4a3ed9125127031a1ff247d4a9925744f8bd15e079b13e1c7e0154faed7723295e817f4272110e3d7728a8d9e9587bd78b1c836d1ae93a6a6dbed850cfdc5c349e0ce0dd4aa6f36a888292e8ae0ba58f7dc5b8580c072b6e0d204745730a0b6f1a285409b79385c7ef457cdb70a289f144a68fcd5902aea0f13a9029a57e50a522ac4bc7ab3f8a68e259a50871baa92f06849072c4902ca97d756ba2e46ecbcfe57638639b34e0975c612353bb14a59bee8461baf4289fa16983dc033dae21593860cc9034778da425f79ef6b07cc796d7887aa68279877334a240490136a23099af6665c424cab71728b1630d4e129fb906fca862b5fe5bd1d8d01b0647ab82fe74659823b13c21ad548f2739038f16db0f7d6c161c6ccb6609b5cfa78195ad171f2f1b5b6435cf0b00fd628d82232c9c2ee50918433585f15ea71701574266d828a3e34a2ed38943e2c5b60d1142a42da996baab04dec5b773121ef4dfe7be67ad5feea11539c19279de0ae0cffbbba148b7c58bfc847b025dde0f9b9dd9d7d09536fc022ee8664db9386c6a8e0cba7e3355cb585741237c0ae6b8e8d7fa80d8832c342ec15d4f89c2cea4b396ec048cb34cf897b721294d29002413e5a49fee61a318ef9656a868f0fec9899a07ef26a39d54471946ca78abfccbf9161881ebe18208dcc632c24d67f9122612662d06a5b7a683b4fd81bf91931c8034bbf8f929dc79a6b8f2128dd02239e8ecc16f3d6cbbc525b7cba356047535f2359983e50402768d499a68fd105acdb2495e77b3e53ff4cbb0f4766ff790563a346e3fbb8ef0ef1ee0ba7a2d6688cc4f1c262204409d595992fe0ae4b1e36d17e52ea3aec9a3c853a8625d5b6aab65b78cf873797e5fb7086b673c9af50f35d4c14762a86d3d2f46569c0b37b4799b87cfd07c5a23eb271aa9d800c8380e46cfa0762f42bbca8ef6ea7df8b03ae474810488f63efd4f668c6a7261176ab0a351496f840b169cb45d60e769b4bb5e36544528f8db3c64231b4ea47e3b82499099a150739f3cf68a270b5085257f58d3139037880401eb978c88c61a250783a09cf5a0e975999b43dc08614e9c9a387906a512f19efcde44bfe5b5530cbcffc9b0a14fe3e55799fdb06f8e0a7f946207afa7b48cddc2c5475f79d1811a015d8a89df30a3b662056310561c6c3395d0cf081a7d602eac4fd2ae7d67a028d55297dd58ffd76977c20266d32e300dbf5f1a9002bfa8ef7dfa4911af323830bb718bcffb6b3821aa678cf2b5884474ecd2ef8168d2ebd960836e35ff86d9ee7053ceeafafd2d6b9eb3dfc9f7b8641762e75d9e3de125f55eef25be10d660237e8ec1542191f494629182583715f4bf2a874c6c7da9ea38f534b2776168e22c8120da90fc6d2c5c97adeec9bea65548d080a954b71072e581d9ba48c45dfcda96616e4af4f4a85ea8abaaa91798c4accafd2294d8110483d76e45971397569f6dfa3cba7f361bbf32d3063a7a25cfe317a4bb27a449819bf2ba91f1e2f27ee5f12ce53f9e195218a492705dc84514074ff7bca4fe36ac40269b7de26ab40653a4ac26917e09356fe2597363384ab3be7c3b4ef1922749842e0484fc1f160ed70114e8b04efecb9165d2f7e68fc699f103c2cf5f072194a1de1ef1fbc5fbb6830d20d131cfb9b28aaf8b2ed750199ea27653214a55cb8f17ac57e1e73ec9262bf72d8c3b5624e625b059f63d828dccec299f857297319a2a57a0d2047acd1a701683544b97b9413f66b9a0bf5b52530935d53e2c68f47a683a388e72d48d81214347d3c3ef3adde3b96406e3f0610d97fcac6952515d10e5813b0cff8299832db3d3c149d99b0d42f855882cd60af18f55e7a871272cd5ea35387beac4cc790702593f3ba2a198129af38ea9bee6b61070711bd1616982f156c872658b4424559f4dd8d3b66f9e368944edb04ef97585cf741f70fcfda877587f60789e4f0b2b6a4590d0d9a0524698fe4c679a80fdd96802a144f3f25330f979f4a758fc06564433ee21bef5983615abc3024c0e5888860a03ecf9a5e7c8de98d3a56b760a2b5e15155a9259f0ee0518154521af0f2b40ad598afe35792a0d643f07001e3dcd17d5703d554ef26fffbd03fe39bb61c9666a0786c69f261df8167883d6cb1e8b104b5e2d3fa44760839049a83941752639ef01f19d2a9e6b3608ff1083972bc0e72929e9c174f2540b7a26899d363699b286be5a1eb4156d2473c924988e49a044339b03dfd1a7794a265a2d985f0ee5473c98f99bfa32f40438cefae136450ebf5975f7a66a7cbf23f629663c62b577273c96e788639b779c7cbb607e2d1ab3d360f3bd76add6441ed640322caabffcc407105e87b1a16f6ea6e99dfb05f7cdd440a02ec190afd6147250c0786a772438a48e84876695cd9df7ae97d2d354e7be6f671406a8bdec3fd3d4ac0f857d33563b0a7bd5c206da130f517af521bf5cb5b96dd7b9b9c0d569c8e41ac3cbecb5ca7e1b0d46f6c3cc93bfa232a95114184f327c30c72595810a5626babfa695b6ac5c944fc1b94db4aa55318e4fe001a713e7e06b062ec6eb7fd5fc1952c494dcb1dda1016af571a2454eae4b356666156bcbf9412f3758b0561edaf18f5fef02ad4dec73623e0a8afa3026fb63efe9bfd4847eb5f00a326d2ec000ed918dbfa53082ce1e9c229412e353e13adedb6d9b39e1859246ec8b538b9c04935cb24a74bd2c561769ac2bea988f4c21ccda9a0271d30c14e42c574506eba2d0ee0b9938b3e946be037d4ac674a486b117e4f42ab73774deb0c06ded1102fec7d2cf23a0c4d6587e33831629fd44111356e25e8f4ebe69cf9bf8c2596e0c724b91d1f88cea7b62db48fe62014a208fcc299b90d4ec0e2a6bf312a82d978d997f4d1cdf9154976effff00e6fffccebc320bf1211f8f96a2a9fb282000190dc907d5a421e204cf238d1c14763fb0220a471fbf4d2bd0a9eba2eaaf61348d2d7230211c99ba85d416bed8f1dff95855f58c65ba3caf4f0a3fa8993e6caf28b29bebea8647829a66f6ae97c6691e4ffbf8bafaca71daecebbc44610fdea1ea421a08300f11abecb9ee63c615f58b9ea3d4e21b7037f120f9bff4c34b97a376cfed01d6b4d836b162690ae4d81d319b2483d819cd1a63128682ace104a213c508854f2bb17ccefce9521754fa0f8e827d2cc6bc3a7795c815439f3cf9ccfa96c36e6ff378c25460e03611cc427e95cd0ede1a654381dafe3e56f0cb9bf94324fcded665a7665243f40bdbbcd346696e631d648d752477464b353345c624af90527112b1693e56ce0a534f12f9a46ff804bfe12cb2c7e27b824f782b5e537d93b2a93906fe61b528bd40ace5274fa6f0010cd60a871bc135fb830972a400a1060f44f43d8a52e92e79406de17898f486698528e4ad3d2cf0e89c4b08825efe0fb2c12d47def7102e8a8a67a5fcc782646440d8b115100e4f0de926703bfec348bf56551e1853d798bc87339fd8f2a1868c278f219f72036b8f1a7c625b2d5b7360861de3f2133721408eec88b068a0c95f68937bd7d5e78f6a569982c4b1c9ab69132d209f097bdde024886d9e0286fb9f2c6b586e36801eab687a1ef69d6f1bfa20802c98c621ba28ed13aeacc2f4e42951b6bfc1bc85644c80e2e205551817e42d59bdfa5561c7529a3ee139713125a8f34e0b1328a04d46b25a3c2ea0e72704c15be9168dc2262715f85b4f71f28285cdfb903b281f3f3150f34fcd9cf363c89e152f9133c770bbd5d0161ad18214f34da21439d1657ae1247a7ee44120f9a02c9d0c8c3a24e18110143113a62a3ebc70e1a7bea033ee28215b09aa35492c72c7f5db19c90195d9d1e505f5c55ab69b2297784868947212618c70f42c3155ce813936466549431ce4b0c1292686f79cf6bdc811030bd50c4e0a6523ec6f8c1369b60302a47f920bf9638392062dc014358c93790d5a158e177830fa55be3da4b9627d5b3bffa78e560a604a1d14a026d74469dba4f92b5f3a9a407fd32b1e446dbb67bad5066d2edfd8d0d0e6189d8c5b1b98ed775e630b9724726006fbaef92325f41ba8fb6a9797468ed265a3f4c6a0e7b7d6bf25e27cc90a99a51257db8a49ef11ba1ca4b3b6353d6270c0ac967c30cf5e7a74b9bc0564ca4cb75553e4e311372cd372ba6d22b8e707821ab7112022e78d2ce656560c04ce7bb908aee9b93848b2f9868bf1f73ba9aa78e05516a8778dc4565698848e14bf29f890e813b544c6c882d2fd1afe6d94c1ba12db5fe4d80ebb28304ecdf9fabb94e0bf157135e614d87a18210b3f0d07815e2b5db20f20b38ce30d67d34012381707bf8b264e3efec0a44530b37f08f9283b3b0b24ce4b4199745c7d84f1177e4cbd08ca50816ab8d548514e51b3dd091c0747253b405ef2b2663a55d04117e7d81085902f5adafd1c5c1286031ecb864ec0096d7dc4142cf8d40ab72e4fd484411c5b97f20098ca4c4191d1607873e491143e5ea8d100eaaba9a142281b5f9bb8efc51a89a284333f702b6ade56e3418baba07f238810561adbd7d13e4fbc4b2a906fb40ca6cc6b45a694c17cb710b4b07bb58d48ed2c82f24bc06e608661819dbdbaeb107a1ed2a8a1c1053b0e57fc98298c18caee9ae541d9f6b2b6f4bd59f3eb8d1beafb84af8fa8c4c3f17d7277ef10a0500fd50f246cce893526866492d834dde62bb22b9988f5185040d52c1485ffa0ef137d60a22cff92c0adb67cc4fc98b50371f637522883a7c2d55d10f5d871373487a381d426db00073edb226c6b22ab1242b15af9f03c3e2a5e020f8893ce7fc211dc1abe078ddc732509e1c1ef79882bbc3be8271b8d7aaf5d6ee554d64c746a9ebbaa606ea7ff902bf0942c45a00661c873fc543aae7b4cc618d081849e3608dc5c49b173b7fb4ce90f42c4896701a0c602861974e03dac8e4d954b24827d709a01da5f1ba417444e2dc30c000704e23356e30df03bb497ea3c01e9ebfc0f3f9a9c80cc01b6cb5254598e5ddb5cb957ec01b55e839471d3c813cd2fd2208de1b23953b2c5877f8c6f6bb866119621e86d67c579212443771efa14fd043f2afee8ede030842e244800fdc586aef7f080c20ccbfa4ceba3e1672587a131501b1e482cd8b9b515f0079202d5a76416cd2238b45873b262f6f4d5589a626529fd82a20e425048fb298975f9ded64618ee8e8df69fe7691d1b9325e69ea5913ae0e76bcf5499d87fc8ee769d0764f586a1503acc6e9a445deab192468334aa8d1f0a4043799d5f882d6c008866d9ae076af5c4aeedf1e2fbb6598b8662853adc40302c00f5ba320aceec4a76508ab0210a8b6a0bf28aa5f00c44705a9495720fb002c00237dbbb4ec8db197b7305f517b0967b11bfd0e83ebd3e95f027e5f4f105d17fef3ac14df3a307a099e46a25353f6c0a002b655f231b741cabbf5d9737c241bc7c66e9b1f9b5ed7d1710499b0ad95e3defb326902ab0e98711091fb56d169e7869204060c3e1f1d259adddb40409ea7374ef192762b5352c95cde714fb6a998001b536bcc41d4108b62f0eef7cae4c35d16dc30d025702e50d8df00be6c37548d83214875ae991c2a67ebe9e1fe69689786f8404f26314473c1d2c22df2cdaf1b33522a23cb69c508c4aa5c1f14a74f1d1e02ba4d22d3571ebede186faf1024b3f333283b203943baed6c415cd0139ec74cabf79940c1529bcace1d46225ca651ee8f2fed69731deb16a9fdad52b9d42e4f8be751b86c964aa6e7f2fef691b7df158a66eeea46828ec9bbb39e711f7c11f3c52be90ab594e77ecbbf6549a84623003994bbf19d9210773c805e49067695e0faf4a7292bf2576f86cdead28424ef62798a3a7d88ab624bb411fdb930dab83ad2707b102f48bd30a92b1f96469555ba6293dde6a4504b31683f4169f978266b00fdf3c28acb31a2217fb7c9cfa4534f4ee0fe7b7c58e09704b4ff1ddf70591e0ded4fe24ccb7acb5e638a5d24db37bca53bb3d9d6947e894135c7a3089416aad394a2b3691c12cc12dc8061962f31ad6998764236fd218f197a56a6285dcd521d5e2323e9667a4ce1e5154c5d9b9626f618ab4872be6f74eeea2cd1123c91b12158479de3c2021a1c233856134542e8a973d8e555440963db5e4a9c472b2913fa0c36c0cb4a69cc5eee232ea8d2d23f2a31779ebeaa95b125df97a1d04f3cdf472659bca6be369e3fe332eb6f5612977c88c8ef3530995e0bf1f6ff35d635b0303b4cad99aaaa3e682a5e033d1d46896e7be678f2d034dbb7f3a2eda3ffd54b0165561a93bc9c78a34a403c10b3f6f2ce152b6a7492aded30860111d91e3b06d3454eb55958ba373e09f2a659faf800bc4f3f6b5592b517002fdfd5680c1beeb046129cad8cfeb7b2b7b690ccd33cb698e811ca19f1287fd8d698845320e2f3d59a0a38a09e2dbe4b32e66ec3613f4d6be9d5d789bb4652a62d8b010a1e3fd4d2a10b44b0f986eed60da03c4b104a6120ef0b4239c69d482167c6434dadd9fca2761861e359b8e3f5616ba62189b1569528fafaaee385dea666d7bb6f4c260d726a32859e902420e03fade59d6bac6784816b44a138fe04bd08408ac28cc6995797b63c3518d1b2b443a40936d0eb0010d05a08217495743a28a4c208c129ca288b4ddc5b68f8ae88783fff4a0531ef2371b61954cd709563d7c4a53fffc0f77b733fd60cebdf04e50af911ed7dcd97144c73048b9b6058b77d9b5b17942bd13c3d1e7f224270343f1ed55efc0c3e8ec1ae8a79e4b4da032c2f88a7a8871cdebb164068fe11d7d517307b8ef92218db67bb2735dfa2e8ae14a8d5734b3a27004ec58e91a34487d8470c19f1bbedcac7535fa8ff1c7fc5577edc4b84e25397ee1ca866a68fd0769454851e2dce5b33befdc618f39d4600924e6b72370a27de6f04b098112ea99206479d78d231c4130222012f418193195dc7374fb3a185f0523d8a6ebbb6281acf3c30ac9f6588e0080f579f6a109f60a39b3bb642329db7650191bb38018f59b8b4b744369124dc30f1d89980510a0319d8fdda6325aac3e7c9fc7fb0b6580bb7ac4c967d168771fe9808b0ecfaea161acf6a6c661a2dab791fd3c443f937c9d762f9c3d61c0bf603f6b5eac4e41445edf732787a4aefb95b7e9bb60559bc10e440493ef970ee7218b83cd68de75427ccd638849f7ffedd4b4a4780477dab226ee26854ef3c8f52df394f5d5e614ea21f30ea8a44661c15ff0d6f2ce8598a9696e27de08471e067edd8dcd313d8560237029eddc390d63d5baa88052cea2e0d7143edb3ada6e283e94a5212c25d305d1c47b27199349b17b3637bc9411b3bedd9341859e27163969b5311b86c7cec56b9f7ac396c5be515c5f0bae47d5a4c6a48f16aeb85a4fb20007c91d01a22a44aa4b32ecbbb89dbaa184cced6cd28a830ed447d3ea9dd699a619f45301bac845df8c9ed016c44eff5ad1389d35b78c7437a49fdcab302badfe4689f202ea591ebb2cc0db24103f88c35a5ff3a7692df06adafdbf07d724f268c8b0a3196645fd341af61b785e6a80728aa073e87a2e69fe5a92aa66d2632a3eff81e1aadfd010e0d3e54147ae17f249325783f3a69aa16061f5161b427a2eb8066e05a451be6c2da25395eb2830f21de54ec575b8483974cefa77ae40294a54b809474ad7d76d5f73e315c08b193ebb4faf29c9010b59b35803d2fe3a828a793985e500839b1407b466a2b6a81e0259dcad5dead8b0677e9e66e72e19d77fd8d79e20c0d84f6656bc5fdbe4be7eba6b584727b85c906d442ac34bcad56baf9a11800013ec902f5395ef092b0059913df42d4dcb29275ca01ddeeaded0b528613113eba3458ee3ab5203a70543088b5cdd22f23e166470ee7569dce62d777ff2d46fd89f53cbb35b68cb1e5d1c0f6f30c5cd613577fe5a6888c9e80a2c2fec01e84862f61b9c4093181c763cf399fde90dd751d5e7f3f733778d4e2f3d0bf086bdf7d312b3f729a2c9a1b7b34e6e42b18121ee4e6846ebc7847e1f67ca63ae43b10cf3750f67eb5089607599aab8ac24768b1d6c0dc4acb2acc01334742bf46c4f6c47f12acf5492973964eb4122941384a264a5f6160e4d8bb8d072e49ee4da394ade583905dc0383134e8026be89a4f831180a62e891516d9add363bbce59005c850e6e5a5eee2e7ba76faeee63ce0526f301383f1b143c76c8b43ebc4268403b8f836e9dedc138b46444eeb9fa6d7d90e1917a96d0ee32512fd36f485fa87d81b13817aebfd96d17f62e8d3804a01c32a75249a9c45f07248a0ca3feaadd937377fbeba7270b56f1240357b54a30be2ec055e8c7c452481fe8d4c05323ed90cab42151cb2af11d1c82110513f6587054958de20b1135aaf409b8eb943cf563a3849f1102de62ffabe9afa6ab1c6d4a33832e6aafdb6df80d48c5122a3c134ae2e5b03d5f05eefe977835718fd83f4abd27ca34241c14404b703c07b3db719675841d1e915f98a7e91a0dd89cbdee2903a881923b44e7e2ce773d2cd084850c35056f89fa922a8e49062a04795d3dbf3b27529ac5fe0dd0f94ffbae52574268eddbc48c05a4ccf6ba021ffa9d4df66f4621d6434530da3dc3ceed850e1688530afa74e9567d19c43bff3b0750e0d13426bfaeb660a361badc5b4efdc0fb421d7dc07f90783ee5ed739cac1ac168ad121e5787cca2ca74fd9458a237dd709722afdef93febb393f33bcc25adf8b67a2c4559dcd3b6bdc3f31e76bb60a6a8c60af451309fdf589b8942eb94f14c6a70255ad1801980bc05de5ab8765236701bd8a6b494cad5d40b47292bacedb70d4a587a40d7dfa7343966be46b342ac09c69c710ace5eb3f1c5e73d2d5c54ad43d1769f2940abda569089436cb814afabafe1932a36496dcf7a00c6c8f09b284f103136253c7010ffe374c7d608ad966ec6cbc2a76bcb0b3514260ca239140c5eddc3e2e39636d417c34303bc1b1e7a18a0d59af9dd070090907d3a52acf696b7b93ea3ab82ef118baacf2c22165ded74f059a769680cadfdd4292d6bb531c9caf6e4a98698511e8f56212660e4bcb601eabe5d0bc78258bb0fd72945b2d0fd047f2ae36a3122a1fddfefcf65e2dd174ea7c46b01d38e7df3a3fcab5ba10bf1c32ab4a62ed5207902e16640ed115f36fc959c80a628607779f27899e7dbae03b7183ede1bd53682e0ea7766cef950cf34e465b6b432e52e979d2cf1923c6056e52631cc51c76968c31116b35d7c17bc0a0c09406ad2e8f19d203698c125a5acb6487a9b0c174144d162dc5d1edccb9b11aa170fe7900ee6e978f563441fdff8f330b7e81477a6aa2dcacacfaf9c134685f3891bf6d6afecfc9f931031839a3a22e4fc6b34e2e94313a107967a70069cbab5f515869c87b9393f2007d5d6eea8ee948b1e0bae8b9ca1bd1a8b2977b7ff923edb8c91781f29263cc4e6656362dc0a0ba089775aa8ce2b931a054c21a19bd1b05f0db041c8a211f6280e36005ece102580cf7bf3f19a435cefe53668c21f4e077b7c7a2b4338d368add33972ed957cf670e074d4eaecce5265d3d3325410a4a2026c330070afe42e8f453d7790110c7a16f4a2ae7bd5836370c9085e3a7263d25167e4922ca5e3e4c76f6735d0ec651420e4e7855b1895868af4259bd8f3fcac682b9db3596a0352bf8602442ac9d08c04263fec4dba1359e586af007f393fff2007ad2c924f9010e413a26c453b4ccc3c9ac1bf9b45d5672eadc5b75de4327870647c54b872780dbf35251836fea674796197cb20f92b7eb13b71534e01e2fcab8765ae92e518e134102e0b58c9af0f7ca4ec263e78e54801b4a4a6965d0f491b647a02d5b08e528f83368ba95485bdddb6d5221d571c6ec594a6a26ad2e77a8cc78a203f7e2965988f2e32850183926cea818840815cfedcffec10a8056fde8459eb404765629a51e46ba5602db2dcc19420d686bef52fb453a465f9b82cfba5164d0a6a160481f3e4a7817975094831b2774f41aeefe193f6cf44acddd577141406ed463a5c37acfb454046cfb57fa7325c1369227b3917d6299d73dd25be718ffea5452072a0b574817c3a613445f279cf4d1fb8140b95f9e0c1010453b488644fdcbcc2bc2f213b843890a4bff13eb133c08d1412c8cffb9187e1a2547e95830664d116770b53bcbf508b7531e9651e614b57a4b999ae6e0b67d03546c6c03ed51e620a06eec97956f83c73caffa72e3aaed4f12b27453d1c8f59e49a42f96b8a27d322fbf3d0c35b3c3e6e0b8ee2a7e258f6eebaf7b942391ec6a27e76549424bab9fb5a3a3ee2004a80a2771d3c932ae41970f459e2252df30abca6ea7d5e0e72c9be8692040936db88d297e9a303720d27d47abad1b14dcf36b56050f3ce20b6e6c03edac286ca9ac202ff6e8948c899375fb45b198471035dc0ba409c7cd4f3578717237295b1638ca73db6193da9ed1b9e9896bae2e6f5436fd0d3f7d2b55fcdfd8ad73adad953af2ed4b71272205d79e304fc46836864286277d045714f1aea1688962ee906b3c72d53b7b1dc9d2bb1736ac3973f9f98aceb98baf51d731d8b6b0daf22f28282a3bbe57565d68340bf31ae53877c8ba7a26908fdaee5e0274b7e68546d7f516989a6631e086cb3cb25328f976521388a3f85b0491f931e10e8935337861d5b0ba19161b5dbc831e2a9ee1ae52477b38457b5fa9f00db15c00c6991113c2ea6688d032b4b62221deaf6ec9295d490d6c94f34c49ab5ee42c7406350e7ac3aa9188febc1082dfdeecb1f9d7bf881e13ec80617863174a328f4f0435d6700cd3c667f028e6523f6a1511096fec9896326aaf9c6c66bb93453f5c4e9724c4b73a10259772bf9ea55baa1a7dd412c5f7c51277f4ae2e4597f93531d77735d59abf566dd1c3b239a1c88268008a7631b843b64c38c247741af51f192d728820e8f31446783aba42644ec7b4258541368cc55a136d00ab4e818db0bee9d8ae0dbc4cc603a83f6690ba763b032e2c59344d15aee1de0a385a29a7e4b5d6ca2e1e863b76f14cc056fdf9b5757acfac41d5eda4986e7e06857d80ffd51c15f194750800665809fdf2c3ed505681969e41052b50ab982b570b458dda5177604ea99e59a9779336f2b5ee68916d273a8fc1e68d73bd76fa5e5924f69bc311426b7d3e1d90d096643302a571dc2fd05b0be0b98685290c8dfc8f3bccd58fdd3acc229fbf91db749096db89a46d165decb9f8a41006fce7c66c5107813bc0dab958eebdc448e4735131314c4ba66582e34b55aeec2c9542c68dcd9312dc2fe522f1093793218dc78b2ebe0e0f2042c9af45df35b255346b2b573531d58e4b20d293468f5b5cf0e91552313139b2230d5ead131c282cb23193310047a4201eb1a711eb7800378a6afb6c9da38b7009e6f027ffbd237beb8e6d3e6c311ca9b2114c7f21fa562ec881cd8a043f9d349320448977e6bca93a8abf5f380cdf0693d30ed095fe8dc086f67304299e15605138c6d162e2fabaa4bcaf8cf54df3a01a5cf4d7ec3e4cff577880b78d5f627708b887a46bffd041cc1662506fdbf9c0e9dbfe0ce0a1e3a907472e13e6790b5cea34378e722580787d99ef27c422cdef61966b5df932baf319b410c71a242b778f6107db62d5d85a14c47bb8b2592cf3f931a481034cb6abd6305855e8ea8478c4a800dde8e30a66b2f3ac280c9e5bd2be0482c8f6a50c2b2773e0ddeea28d7250ca45fbd10f57c6542c86fc3aa49ec396777a778f1982879094af913534cea0ecc1ffa77519953d7c45ee9e3cc5e8db7d5b855794a2c4d4cb466a167db5bbd7a0bf946e77035d8bf7adaa7aaa9cd15c0f21f419014b332255a72173f255e0af8158fa9dd473e38c080d642997991e3bea9742eac28654b2090294b5ba9ec92fa72346b498ad0ed1b5216e357adbb40935a6aa044bec030940b3a69708d3376ca0bb2f87b8897bf549e87763f2b51703f4abe36b1dfe8c820a16ade3d7cbbca739213d867b17052f9f699cc7c18bd02c7b77560976059e9a9837e1b65dfd0deb4adb58579dbddc3b9ebde74c4ae37686c7fb6f34d55a12482958108c93a78e0f5df03fdab024346d21174434b302a6cf3baa5a2dd1185674957995322cee0458100a152f16a9799de1ebc68fab76cd4fdbc8e9fc63e905df17e7651a8d3d3dacbbb776dbd642f7bdd79578490ea57dcbcf9f32e061be79927ba287487881ca002ba0a450d290c5dc43da8a24a684306dcc41c841538f511dca0d56e4c15158cbbe57269b676659cb4fec6f28fdbaf67704cbabefdfeae40585a7080fb2594b6159e06c958b1c1be81bbe638e54b8975b0c621231a3fe2dcac3bce830bba9e60b543fce713f7f22e8a7402ce1a22233a229c904fbdcbb6c7d4de37bd99cdf22a374738d26f9f4814c12a1d244c62bdb2a4c978d791c1fb40c3bafe19c7006e9b0cfc5aa622185c81fafa8c9a6a370480f4dedbe1008b6ac0d7eaaf8ca7138240b8bd888619a0891aa91b5a52ea7eaaaac79ba2306e3a8516f4e1f94468dc688cb1073a1b9eab6218d1c29e375fe642039f21f51acb5c57408e4a228318cb0bc8bb328f83a09375643f9c92f5a05992020b11f73a9e0ef5d0e453b088e377a54eab3920bd6db83ddadc0939fa71c9b565a6d978f1c9a10247fe9cf2fbc6988142fa9b2958382792594a93ea3472b9493ae81a52bd642373a25e788f7acafe8bb026715c34bb838fb94de25b59a65daf440dcca1769ee7f63ef1f2520c68e85508776caab7c44b8de922c4c0c05345a3a97e27c66a61f0f2d57780f3f5228a4f8fd5c496e4bb2746c52cf45da1d9cdb5e95ecec5224ff1f7a7e416d4bfa0c7570bb9ed016cd46ff09bae0ebb0346f55396c06952627fc5d6a7439bc36d389404f864adad1ae59e14797151acc110df9494b9d0e186cada369bedece00f59bf5f548ba2cd811d0241ee8e1c89b0d57014f955e0a5e1345e7f34600bdfd9cb30453564aba6217489caebeb551266eb4170eeb9dc6f1570a9be17a27507eb1b5ecabb08e471642da4d57e0a28294f3133439a39dddf6fc2832ecbc1f0ce941f6a119de825d27ab2be4d4e526cd57aec3685b565f4de4071b9f520621afa1874932ee36a4d2f54545282185029b5362433f1ef0e52219519e9d948a4375d730807291e756a4508f93743c360d4e08bf476696095a7e7d7e61163db8d414b40f4749f487a4dd60dbafebd8164d08e190d4ab77fb4ed4490dca0fe0b4c0467e7bb80b071a1f28ec6e667c01a300e7f13b48abdf96a74ce7fef933249473bcdbdb8f4d2d8953922a80b742c6070164d6f6d378f78b62926796f2a9b0cf1f9478873dcbd57041c223ce96b7afd9c84ccbebcc96a8f660d926880d831ace456a4dc523d70091efc933ee31eca7a2be5b9272ce95fb6d5553ff0fc7e5f56d91244ac8828f9bb8da98bbc21af16f30d4725eb06d53ab81e4c24167ed576c181d8476dc3074a7afa02cd661b6848f3977bc3655e47bd9dae514afcfaa87936aefa0d6c5e7cc6902aa519d314fc80adaee02b313c2884a3567141e2eceeca2ef43b4435010d8c1787723e72ce1f2173d7ed58ad90cb78b1cbc2c2a653e365d00c45c16c74e21d4b1e5439d0a88bdb30265f73df69bee9d91c14de64414b094dff8a696bd7bef607e88c307033008bb5294db480159828d81cb097c87f1f5d3469195f144c4e9ed3c5a525e8b5e5775a9ebab19f38df67d5411c30a271ee1c258bc7f8a24d5ef317f7aa76e5be0a5164db813727a35db03e97c7f3d4543c00ccc834219004bb0d3505c829f5996e1450b5ce7573eaeb7707aacf57367dbbe257c26613e3ca12820d4aea7a791f39abbe3d43260649062349b4e7065ff29848430b72a8680c32b7f2d3966718c1ac554423a0ada39b71ec0adb809ebd9d0f84a03af9aa627ecc9e6c9dfc21c98a6a83a4bba5675a898a1fff43367799d4980e7538fc91aa5a10eb0ee902b33c19ea8c2888bad3d089d36e40c3ea8070786136ce88db5d2d943086cc52a290165a7f6ee710788a6b27f87f22fc01a15ac7f43e936df052b478ca43b097b896b100b6a4d095b20bedf077cbe6deb2b4b9c1dcea121c6a09e6dac78aa8404a4ee60dbcdf503a26af85825405347d51b7c9ea0b0576f0d18e95a6f741094430b81d12e7f23418cdc2bacdb594fcd0c7213c43e8f6ba31f9fc6e9e89599e6044a2bc5386ae0aeb0fdf1a9e531d76dd1e51ca06e2dfa07e7634a8aeb7b57bd9d765ddba0e318b2553045ffd0fa711a3b00d4e163859d7a5b209d760ab64d5f9483808c718037d0fc32ad22e9befd5587eb49af343bf5c8f615a5c5ac929851790617c2d4790f08bc344b9af370d27a49fa86632a681172eba387f4e634f451fb7d93edd00cbc1ffd1f64bb50a5aa447731c</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-xray">
      <input class="hbe hbe-input-field hbe-input-field-xray" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-xray" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-xray">您好, 这里需要密码.</span>
      </label>
      <svg class="hbe hbe-graphic hbe-graphic-xray" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">
        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>
        <path d="M0,2.5c0,0,298.666,0,399.333,0C448.336,2.5,513.994,13,597,13c77.327,0,135-10.5,200.999-10.5c95.996,0,402.001,0,402.001,0"></path>
      </svg>
    </div>
  </div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css"></article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta">文章作者: </span><span class="post-copyright-info"><a href="http://liukuaizhuan.gitee.io">扣小妖</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta">文章链接: </span><span class="post-copyright-info"><a href="http://liukuaizhuan.gitee.io/posts/fa3c4ba7.html">http://liukuaizhuan.gitee.io/posts/fa3c4ba7.html</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta">版权声明: </span><span class="post-copyright-info">本站所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议</span></div></div><div class="tag_share"><div class="post-meta__tag-list"></div><div class="post_share"><div class="social-share" data-image="https://p.ananas.chaoxing.com/star3/origin/1cfee09060492f5ab51b2bd5cb5f3bb8.png" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://lib.baomitu.com/social-share.js/1.0.16/css/share.min.css" media="print" onload="this.media='all'"><script src="https://lib.baomitu.com/social-share.js/1.0.16/js/social-share.min.js" defer></script></div></div><div class="post-reward"><div class="reward-button"><i class="fas fa-qrcode"></i> 打赏</div><div class="reward-main"><ul class="reward-all"><li class="reward-item"><a href="https://p.ananas.chaoxing.com/star3/origin/5a01db3c5a0daca9fa2b024736bf66e3.png" target="_blank"><img class="post-qr-code-img" src="https://p.ananas.chaoxing.com/star3/origin/5a01db3c5a0daca9fa2b024736bf66e3.png" alt="微信打赏"/></a><div class="post-qr-code-desc">微信打赏</div></li><li class="reward-item"><a href="https://p.ananas.chaoxing.com/star3/origin/afffb275198370656cb6cef6a1107185.png" target="_blank"><img class="post-qr-code-img" src="https://p.ananas.chaoxing.com/star3/origin/afffb275198370656cb6cef6a1107185.png" alt="支付宝打赏"/></a><div class="post-qr-code-desc">支付宝打赏</div></li></ul></div></div><nav class="pagination-post" id="pagination"><div class="prev-post pull-left"><a href="/posts/472cd75d.html"><img class="prev-cover" src="https://p.ananas.chaoxing.com/star3/origin/da0b4d93c819dfa0b6d3036d1163bde9.png" onerror="onerror=null;src='/img/404.jpg'" alt="cover of previous post"><div class="pagination-info"><div class="label">上一篇</div><div class="prev_info">003.百度网盘高速下载</div></div></a></div><div class="next-post pull-right"><a href="/posts/7073f608.html"><img class="next-cover" src="https://p.ananas.chaoxing.com/star3/origin/276b546fb6758826dd9aa16092dc5436.png" onerror="onerror=null;src='/img/404.jpg'" alt="cover of next post"><div class="pagination-info"><div class="label">下一篇</div><div class="next_info">0001.全民一起学VBA教程(基础+实战+提高篇)</div></div></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="https://p.ananas.chaoxing.com/star3/origin/c6eb667caaea4b46a934d65b6a348821.png" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">扣小妖</div><div class="author-info__description">Email：  liukuaizhuan@qq.com</div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">57</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">6</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">14</div></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>公告</span></div><div class="announcement_content">This is my Blog 技术笔记</div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span><span class="toc-percentage"></span></div><div class="toc-content toc-div-class" style="display:none"></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/posts/7f4a6eeb.html" title="013.c++核心编程-类和对象"><img src="https://p.ananas.chaoxing.com/star3/origin/7ea674ffcd12ef7d943d54c93e9203a4.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="013.c++核心编程-类和对象"/></a><div class="content"><a class="title" href="/posts/7f4a6eeb.html" title="013.c++核心编程-类和对象">013.c++核心编程-类和对象</a><time datetime="2023-02-13T14:55:03.000Z" title="发表于 2023-02-13 22:55:03">2023-02-13</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/4adebd64.html" title="012.C++核心编程-函数提高"><img src="https://p.ananas.chaoxing.com/star3/origin/b6c49bb4892ad191edbc0363caf45530.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="012.C++核心编程-函数提高"/></a><div class="content"><a class="title" href="/posts/4adebd64.html" title="012.C++核心编程-函数提高">012.C++核心编程-函数提高</a><time datetime="2023-02-13T14:51:24.000Z" title="发表于 2023-02-13 22:51:24">2023-02-13</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/bff12c11.html" title="011.C++核心编程-引用"><img src="https://p.ananas.chaoxing.com/star3/origin/86403540a7b572fec123890e9a638adc.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="011.C++核心编程-引用"/></a><div class="content"><a class="title" href="/posts/bff12c11.html" title="011.C++核心编程-引用">011.C++核心编程-引用</a><time datetime="2023-02-13T14:47:34.000Z" title="发表于 2023-02-13 22:47:34">2023-02-13</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/9368cbfc.html" title="010.C++核心编程-内存分区模型"><img src="https://p.ananas.chaoxing.com/star3/origin/b4c7f6d417c4c75ed02262f3549625c8.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="010.C++核心编程-内存分区模型"/></a><div class="content"><a class="title" href="/posts/9368cbfc.html" title="010.C++核心编程-内存分区模型">010.C++核心编程-内存分区模型</a><time datetime="2023-02-06T15:28:05.000Z" title="发表于 2023-02-06 23:28:05">2023-02-06</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/b056b485.html" title="009.C++基础实战-通讯录管理系统"><img src="https://p.ananas.chaoxing.com/star3/origin/5cdbcc7b75aea2aa3a8b12cae1439e99.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="009.C++基础实战-通讯录管理系统"/></a><div class="content"><a class="title" href="/posts/b056b485.html" title="009.C++基础实战-通讯录管理系统">009.C++基础实战-通讯录管理系统</a><time datetime="2023-02-04T10:02:31.000Z" title="发表于 2023-02-04 18:02:31">2023-02-04</time></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2020 - 2023 By 扣小妖</div><div class="footer_custom_text"><p style="margin:10px 0 5px"><a target="_blank" href="https://hexo.io/" style="margin-inline:5px">博客 hexo</a><a target="_blank" href="https://butterfly.js.org/" style="margin-inline:5px">主题 Butterfly</a><a target="_blank" href="https://gitee.com/" style="margin-inline:5px">托管 Gitee</a></p></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span>  数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div><hr/><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://gcore.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/node-snackbar/0.1.16/snackbar.min.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"><script>(() => {
  const $mermaidWrap = document.querySelectorAll('#article-container .mermaid-wrap')
  if ($mermaidWrap.length) {
    window.runMermaid = () => {
      window.loadMermaid = true
      const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default'

      Array.from($mermaidWrap).forEach((item, index) => {
        const mermaidSrc = item.firstElementChild
        const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
        const mermaidID = 'mermaid-' + index
        const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent
        mermaid.mermaidAPI.render(mermaidID, mermaidDefinition, (svgCode) => {
          mermaidSrc.insertAdjacentHTML('afterend', svgCode)
        })
      })
    }

    const loadMermaid = () => {
      window.loadMermaid ? runMermaid() : getScript('https://gcore.jsdelivr.net/npm/mermaid/dist/mermaid.min.js').then(runMermaid)
    }

    window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
  }
})()</script></div><script defer="defer" id="ribbon" src="https://gcore.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-ribbon.min.js" size="150" alpha="0.6" zIndex="-1" mobile="false" data-click="false"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>